www.gusucode.com > VANET Toolbox- A Vehicular Network Simulator based on DES 程序工具箱matlab源码 > VANET Toolbox- A Vehicular Network Simulator based on DES/VANET_Toolbox/VANET_Toolbox_2018a/fcn_CAVrecord.m
function varargout=fcn_CAVrecord(varargin) % varargout=fcn_CAVrecord(action,carID,carSpeed) persistent speed avgSpeed avgSpeedAll timeLog avgTimeLog LCLatency LCFailLog persistent counter switch varargin{1} case 'init' % fcn_CAVrecord('init',numVehicles,simTime) if nargin~=3 speed=zeros(3,50); % 3: speed, counter, average speed; 50: save 50 cars' data avgSpeed=zeros(50,1000); % 50: save 50 cars' data; 1000 average speed data/car avgSpeedAll=zeros(1,1000); avgTimeLog=zeros(1,1000); timeLog=zeros(50,1000); counter=1; LCLatency=zeros(50,10); LCFailLog=zeros(50,2); else speed=zeros(3,varargin{2}); % 3: speed, counter, average speed; 50: save 50 cars' data avgSpeed=zeros(varargin{2},varargin{3}*11); % 50: save 50 cars' data; 1000000 average speed data/car timeLog=zeros(varargin{2},varargin{3}*11); avgSpeedAll=zeros(1,varargin{3}*11); avgTimeLog=zeros(1,varargin{3}*11); counter=1; LCLatency=zeros(varargin{2},10); LCFailLog=zeros(varargin{2},2); end case 'save' % fcn_CAVrecord('save',carID,speed); speed(1,varargin{2})=speed(1,varargin{2})+varargin{3}; % sum of speed speed(2,varargin{2})=speed(2,varargin{2})+1; % counter speed(3,varargin{2})=speed(1,varargin{2})/speed(2,varargin{2}); % average of speed avgSpeed(varargin{2},speed(2,varargin{2}))=speed(3,varargin{2}); timeLog(varargin{2},speed(2,varargin{2}))=varargin{4}; % varargin{4}: time avgSp=speed(3,:); avgSp=avgSp(avgSp~=0); numVehicles=numel(avgSp); if mod(counter,numVehicles)==0 avgSpeedAll(counter/numVehicles)=mean(avgSp); avgTimeLog(counter/numVehicles)=max(timeLog(numVehicles,:)); end counter=counter+1; case 'get' varargout{1}=speed(3,varargin{2}); case 'logLCLatency' % fcn_CAVrecord('logLCLatency',obj.vehicleID,LCLatency); LCLatency=fcn_array2database(LCLatency,varargin{2},varargin{3}); case 'logLCTimeoutNum' LCFailLog=fcn_array2database(LCFailLog,varargin{2}); case 'log' % fcn_CAVrecord('log',numVehiclies) avgSpeedAll=avgSpeedAll(avgSpeedAll~=0); m=mean(avgSpeedAll); avgSpeedAll(length(avgSpeedAll)+1)=m; time=timeLog(4,:); time=time(time~=0); brakeMode=evalin('base','brakeMode'); FileName=['results/avgSpeedALL-',brakeMode,'-',varargin{2},'-',datestr(now, 'yyyymmddHHMMSS'),'-.mat']; save(FileName,'avgSpeedAll','time','LCLatency','LCFailLog'); clearvars speed avgSpeed avgSpeedAll timeLog avgTimeLog LCLatency LCFailLog counter; case 'plot' % fcn_CAVrecord('plot',numVehicles); figure(5); for i=1:varargin{2} avgsp=avgSpeed(i,:); avgsp=avgsp(avgsp~=0); time=timeLog(i,:); time=time(time~=0); h(i)=plot(time,avgsp); hold on; end legend(h,'car1','car2','car3','car4','Location','Southeast'); xlabel('Simulation time (second)'); ylabel('Average speed for each car'); figure(6) avgSpeedAll=avgSpeedAll(avgSpeedAll~=0); plot(time,avgSpeedAll); xlabel('Simulation time (second)'); ylabel('Average overall speed'); end end